package cc.rengu.igas.share.core.realize;

/**
 * 输入报文检查服务
 */
public interface PublicService {

    /**
     * 检查输入报文是否正确 检查必输项是否输入
     *
     * @param srcId  原系统标识
     * @param txnNum 内部交易码
     * @throws Exception 异常
     */
    void checkInputValidity(String srcId, String txnNum) throws Exception;

    /**
     * 检查输入参数是否满足业务规则
     *
     * @throws Exception 异常
     */
    void checkInputParamLegal() throws Exception;

    /**
     * 通道限额检查
     *
     * @param instId        多法人标识
     * @param txnNum        内部交易码
     * @param transAmt      交易金额
     * @param channelId     通道标识
     * @param channelTxn    通道交易码
     * @param limitAcctType 限额账户类型
     * @return true-通道限额检查通过，false-通道限额检查超限
     * @throws Exception 异常
     */
    boolean channelLimitCheck(String instId, String txnNum, String transAmt, String channelId, String channelTxn, String limitAcctType) throws Exception;

    /**
     * 通道限额统计
     *
     * @param instId        多法人标识
     * @param txnNum        内部交易码
     * @param transAmt      交易金额
     * @param channelId     通道标识
     * @param channelTxn    通道交易码
     * @param limitAcctType 限额账户类型
     * @return true-统计成功，false-统计失败
     * @throws Exception 异常
     */
    boolean channelLimitStatis(String instId, String txnNum, String transAmt, String channelId, String channelTxn, String limitAcctType) throws Exception;
}
